<?php

class facturas extends Basefacturas
{
        protected $id_old;
	protected $clientes_id_old;
	protected $numero_de_comprobante_old;
	protected $credito_old;
	protected $pagado_old;
	protected $guardado_old;
	protected $eliminado_old;
	protected $anulado_old;
	protected $fecha_old;
	protected $totalneto_old;
	protected $exentas_old;
	protected $totaliva_old;
	protected $total_old;
	//protected $total_pagado_old;


        public function setClientesId($v){
            $this->clientes_id_old = $this->getClientesId();
           return parent::setClientesId($v);
        }
        public function setNumeroDeComprobante($v){
            $this->numero_de_comprobante_old = $this->getNumeroDeComprobante();
            return parent::setNumeroDeComprobante($v);
        }
        public function setCredito($v){
            $this->credito_old = $this->getCredito();
            return parent::setCredito($v);
        }
        public function setPagado($v){
            $this->pagado_old = $this->getPagado();
            return parent::setPagado($v);
        }
        public function setGuardado($v){
            $this->guardado_old = $this->getGuardado();
            return parent::setGuardado($v);
        }
        public function setEliminado($v){
            $this->eliminado_old = $this->getEliminado();
            return parent::setEliminado($v);
        }
        public function setAnulado($v){
            $this->anulado_old = $this->getAnulado();
            return parent::setAnulado($v);
        }
        public function setFecha($v){
            $this->fecha_old = $this->getFecha();
            return parent::setFecha($v);
        }
        public function setTotalneto($v){
            $this->totalneto_old = $this->getTotalneto();
            return parent::setTotalneto($v);
        }
        public function setExentas($v){
            $this->exentas_old = $this->getExentas();
            return parent::setExentas($v);
        }
        public function setTotaliva($v){
            $this->totaliva_old = $this->getTotaliva();
            return parent::setTotaliva($v);
        }
        public function setTotal($v){
            $this->total_old = $this->getTotal();
            return parent::setTotal($v);
        }
        /*public function setTotalPagado($v){
            $this->total_pagado_old = $this->getTotalPagado();
            return parent::setTotalPagado($v);
        }*/



    public function getByName_old($name, $type = BasePeer::TYPE_PHPNAME)
	{
		$pos = facturasPeer::translateFieldName($name, $type, BasePeer::TYPE_NUM);
		$field = $this->getByPosition_old($pos);
		return $field;
	}    
    public function getByPosition_old($pos)
	{
		switch($pos) {
			case 0:
				return $this->id_old;
				break;
			case 1:
				return $this->clientes_id_old;
				break;
			case 2:
				return $this->numero_de_comprobante_old;
				break;
			case 3:
				return $this->credito_old;
				break;
			case 4:
				return $this->pagado_old;
				break;
			case 5:
				return $this->guardado_old;
				break;
			case 6:
				return $this->guardado_old;
				break;
			case 7:
				return $this->anulado_old;
				break;
			case 8:
				return $this->fecha_old;
				break;
			case 9:
				return $this->totalneto_old;
				break;
			case 10:
				return $this->exentas_old;
				break;
			case 11:
				return $this->totaliva_old;
				break;
			case 12:
				return $this->total_old;
				break;
			default:
				return null;
				break;
		} // switch()
	}






    public function __toString()
      {
         return $this->getNumeroDeComprobante();
    }
    public function GetDetalleFactura(){
        $c = new Criteria();
	$c->add(facturadetallePeer::FACTURAS_ID, $this->getId());
	$resultado=facturadetallePeer::doSelect($c);
	return $resultado;
    }
    public function getTotalPagado(){
        $criteria = new Criteria();
        //$criteria->add(facturasxtiposvaloresPeer::FACTURAS_ID,$this->getId());
        $total = facturasPeer::getListaDePagos($this->getId(), $this->getCredito());
        $resultado = 0;
        foreach( $total as $total){
            $resultado += $total->getImporte();
        }
        return $resultado;
    }
    public function save(PropelPDO $con = null){
        $total=$this->getTotalPagado();
        if ($this->getAnulado())
           auditoria::AuditoriaFull($this);// $this->auditarAnulacion();
        if ($this->getTotal() > 0){
                if($this->getTotal()==$total)
                        $this->setPagado(true);
                else
                   $this->setPagado(false);
        }
        
        parent::save();
    }

    private function auditarAnulacion(){
              //Creando el Encabezado
              $auditoria = new auditoria();
              $auditoria->setEvento('ANULACION');
              $auditoria->setTabla('FACTURAS');
              $usuario = sfContext::getInstance()->getUser();
              $auditoria->setUsuario($usuario);
              $auditoria->save();
              //
              //Creando los Detalles
              $campos[0]='Id';
              $campos[1]='ClientesId';
              $campos[2]='NumeroDeComprobante';
              $campos[3]='Credito';
              $campos[4]='Anulado';
              $campos[5]='Total';

              
              for ($i=0;$i<=5;$i++){
                  $det = new auditoria_detalle();
                  $det->setAuditoriaId($auditoria->getId());
                  $det->setCampo($campos[$i]);
                  $det->setNuevovalor($this->getByName($campos[$i]));
                  //if($this->getByName_old($campos[$i]))
                     $det->setValoranterior($this->getByName_old($campos[$i]));
                  //else
                  //    $det->setValoranterior($this->getByName($campos[$i]));
                  $det->save();
              }
              

    }
	    
}
